<?php

class Inlineeditor extends Controller {

	var $modelo;


	// =================================================
	function Inlineeditor()
	{
		parent::Controller();

		// Definir el nombre de la session
		$this->sesion->setNombreSesion('cms_conquer');

		$this->load->helper(array('url','html'));

		/**
		 * Verificar que la sesion se autentifico
		 */
		if (!$this->sesion->sesion_valida()){
			redirect('login_control');
			exit(0);
		}

		if (!$this->sesion->existe(array('privilegios','conquer','ver'))){
			$msg = 'Error: Nombre el nombre del curso no se encuentra, o no tiene permisos suficientes.';
			echo '{ "resultado":"0", "msg": "'.$msg.'" }';
			exit(0);
		}

	}

	// =================================================
	function index()
	{


	}

	/**
	 * Solicita grabar una columna de un registro del modelo especificado
	 * @param c POST Valor de la columna
	 * @param m POST Modelo
	 * @param id POST Nombre de la columna a modificar
	 * @param value POST Valor que se desea guardar
	 * @param d POST Condicion que determina lo que se da como respuesta
	 * @return unknown_type
	 */
	function grabar() {

		// Valor de la Columna que identifica la fila. (KeyValue)
		// Caso especial: nombreCurso en vez de idCurso
		$columna = $this->input->post('c');

		// Modelo que se utilizara
		$modelo = $this->input->post('m');

		// Nombre de la columna a modificar
		$id = $this->input->post('id');

		// Devolver el valor
		$devolver = $this->input->post('d');

		// Valor que se guarda
		$valor = $this->input->post('value');

		// Remplazar {amp} por &
		$valor = str_replace("{amp}","&",$valor);

		if (($columna === false) || ($modelo === false) || ($id === false) || ($valor === false)) {
			$msg = 'Error: Faltan especificar datos.';
				
			if (!$devolver) {
				echo '{ "resultado":"0", "msg": "'.$msg.'" }';
			} else {
				echo $msg;
			}
			exit(0);
		}

		$this->load->model($modelo);

		// Casos especiales:
		switch ($modelo) {
			case 'cabecerapie':
			case 'curso':
				$columna = $this->traerIdCurso($columna);
				if ($columna === false) {
					$msg = 'Error: El Nombre del curso no se encuentra, o no tiene permisos suficientes.';
					if (!$devolver) {
						echo '{ "resultado":"0", "msg": "'.$msg.'" }';
					} else {
						echo $msg;
					}
					exit(0);
				}
				break;
			case 'pagina':
				
				$pagina = $this->input->post('p');
				$columna = $this->traerPagina($columna,$pagina);
				if ($columna === false) {
					$msg = 'Error: La pagina no se encuentra, o no tiene permisos suficientes.';
					if (!$devolver) {
						echo '{ "resultado":"0", "msg": "'.$msg.'" }';
					} else {
						echo $msg;
					}
					exit(0);
				}
				break;				
			break;

		}


		$datos = array();
		$datos[$id] = $valor;


		$this->$modelo->secProxy('modificarSinPost',$columna,$datos);

		//echo '{ "resultado":"1", "msg": "OK" }'
		if (!$devolver) {
			echo '{ "resultado":"1", "msg": "OK" }';
		} else {
			echo $valor;
		}

		//$this->ver($idCurso);
	}

	function traerPagina($nombreCurso, $pagina) {

		$this->load->model('curso');
		$idCurso = $this->traerIdCurso($nombreCurso);
		if ($idCurso == false) { return false; }
		
		$this->pagina->setCondicion('idcurso', $idCurso);
		$this->pagina->setCondicion('referencia', $pagina);

		$this->pagina->setKeyField(true);
		$resultado = $this->pagina->secProxy('getData');
		$this->pagina->removeCondicion();

		if ( count($resultado) != 1){
			
			$this->load->model('paginastatica');
			
			$this->paginastatica->setCondicion('idcurso', $idCurso);
			$this->paginastatica->setCondicion('referencia', $pagina);
	
			$this->paginastatica->setKeyField(true);
			$resultado = $this->paginastatica->secProxy('getData');
			$this->paginastatica->removeCondicion();			

		}
		
		/**
		 * Verificar que exista el curso solicitado
		 */
		if ( count($resultado) != 1){

			//echo 'no existe.';
			//show_404($nombreCurso);
			//exit(0);
			return false;
		}

		$datos['resultado'] = array_shift($resultado);

		return $datos['resultado']['idpagina'];

	}
	
	
	function traerIdCurso($nombreCurso) {

		$this->curso->setCondicion('nombre', $nombreCurso);

		$this->curso->setKeyField(true);
		$resultado = $this->curso->secProxy('cursogetData');
		$this->curso->removeCondicion();

		/**
		 * Verificar que exista el curso solicitado
		 */
		if ( count($resultado) != 1){
			//echo 'no existe.';
			//show_404($nombreCurso);
			//exit(0);
			return false;
		}

		$datos['resultado'] = array_shift($resultado);

		return $datos['resultado']['idcurso'];

	}


	function cargar() {

		// Valor de la Columna que identifica la fila. (KeyValue)
		// Caso especial: nombreCurso en vez de idCurso
		$columna = $this->input->post('c');

		// Modelo que se utilizara
		$modelo = $this->input->post('m');

		// Nombre de la columna a modificar
		$id = $this->input->post('id');

		if (($columna === false) || ($modelo === false) || ($id === false)) {
			$msg = 'Error: Faltan especificar datos.';
			echo '{ "resultado":"0", "msg": "'.$msg.'" }';
			exit(0);
		}

		$this->load->model($modelo, 'modelo');

		// Casos especiales:
		switch ($modelo) {
			case 'cabecerapie':
			case 'curso':
				$columna = $this->traerIdCurso($columna);
				if ($idCurso === false) {
					$msg = 'Error: El Nombre del curso no se encuentra, o no tiene permisos suficientes.';
					echo '{ "resultado":"0", "msg": "'.$msg.'" }';
					exit(0);
				}
				break;

		}


		$this->modelo->setCondicion($this->modelo->idT1,$columna);
		$this->modelo->setKeyField(true);
		$resultado = $this->modelo->secProxy('getData');

		if (empty($resultado)){
			$msg = "Error: No se encuentra el valor solicitado.";
			echo '{ "resultado":"0", "msg": "'.$msg.'" }';
			exit(0);
		}

		$data = array_shift($resultado);

		echo '{ "resultado":"1", "valor": "'.$data[$id].'" }';

	}

}



?>
